CVE-2023-32762
authorDebian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Sun, 28 Apr 2024 20:48:02 +0000 (22:48 +0200)
committerThorsten Alteholz <debian@alteholz.de>
Sun, 28 Apr 2024 20:48:02 +0000 (22:48 +0200)
commit 1b736a815be0222f4b24289cf17575fc15707305
Author: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Date:   Fri May 5 11:07:26 2023 +0200

    Hsts: match header names case insensitively

    Header field names are always considered to be case-insensitive.

Pick-to: 6.5 6.5.1 6.2 5.15
Fixes: QTBUG-113392
    Change-Id: Ifb4def4bb7f2ac070416cdc76581a769f1e52b43
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Gbp-Pq: Name CVE-2023-32762.diff

src/network/access/qhsts.cpp
tests/auto/network/access/hsts/tst_qhsts.cpp

index 0cef0ad3dc011d197665a185242afc09be2e9242..be7ef7ff58f5c59bf481702c49d913676660f071 100644 (file)
@@ -364,8 +364,8 @@ quoted-pair    = "\" CHAR
 bool QHstsHeaderParser::parse(const QList<QPair<QByteArray, QByteArray>> &headers)
 {
     for (const auto &h : headers) {
-        // We use '==' since header name was already 'trimmed' for us:
-        if (h.first == "Strict-Transport-Security") {
+        // We compare directly because header name was already 'trimmed' for us:
+        if (h.first.compare("Strict-Transport-Security", Qt::CaseInsensitive) == 0) {
             header = h.second;
             // RFC6797, 8.1:
             //
index d72991a2eb67317d5353a1f9519f7b5c0e00b935..c3c5f58c222ac5f54a37e5b91c092b3d98c15b6a 100644 (file)
@@ -241,6 +241,12 @@ void tst_QHsts::testSTSHeaderParser()
     QVERIFY(parser.expirationDate() > QDateTime::currentDateTimeUtc());
     QVERIFY(parser.includeSubDomains());
 
+    list.pop_back();
+    list << Header("strict-transport-security", "includeSubDomains;max-age=1000");
+    QVERIFY(parser.parse(list));
+    QVERIFY(parser.expirationDate() > QDateTime::currentDateTimeUtc());
+    QVERIFY(parser.includeSubDomains());
+
     list.pop_back();
     // Invalid (includeSubDomains twice):
     list << Header("Strict-Transport-Security", "max-age = 1000 ; includeSubDomains;includeSubDomains");